import bpy
import engine.initLIB.load_dll as engineLib
import ctypes

import 物体.物体管理.engine_取场景物体属性 as 取场景物体属性
import 物体.物体管理.engine_物体创建 as 物体创建






class C_Engine_创建物理平面物体(bpy.types.Operator):
	bl_idname = 'node.engine_physics_plane_add'
	bl_label = '创建物理平面物体'
	bl_options = {'REGISTER', 'UNDO'}
	
	def execute(operator, context):
		layout.operator("object.delete", text="Delete").use_global = False
		layout.operator("object.delete", text="Delete Global").use_global = True
		return {'FINISHED'}












def f_engine_添加物理车辆(车辆数据, 场景ID):
	
	车身KEY = -1
	try:
		车身 = 车辆数据.m_车身[0]
		车身KEY = 取场景物体属性.f_取物体ID(车身)
		#print(' 车辆数据.m_车身 = ', 车身, 车身KEY)
	except :
		print('err! 车辆数据 = ', 车身KEY)
		return
		
	if 车身KEY < 0 :
		车身KEY = 物体创建.f_添加物体到引擎(车身.name, 'MESH')
		print('车身KEY = ', 车身KEY)

	车辆参数 = [车身KEY, 
				车辆数据.m_底盘重量, 
				车辆数据.m_引擎最大扭矩, 
				车辆数据.m_引擎最大转速, 
				车辆数据.m_引擎换挡时间, 
				车辆数据.m_底盘边界, 
				车辆数据.m_重心偏移]
	车轮参数 = []
	
	for 车轮 in 车辆数据.m_车轮 :
		#print('车辆数据.m_车轮 = ', 车轮)
		轮 = 车轮.m_车轮物体
		#print('轮 = ', 轮)
		try:
			轮 = 车轮.m_车轮物体
			
			轮KEY = 取场景物体属性.f_取物体ID(轮)
			#print('轮KEY = ', 轮KEY)
			参数 = [轮KEY, 车轮.m_安放方位, int(车轮.m_对称), 车轮.m_半径, 车轮.m_重量, 
					车轮.m_精度, 车轮.m_手刹强度, 车轮.m_最大转向角度, 
					车轮.m_偏移坐标, 车轮.m_悬挂压缩方向,
					车轮.m_静止状态外倾角, 车轮.m_最大下垂外倾角, 车轮.m_最大压缩外倾角]
			
			车轮参数.append(参数)
			
		except :
			print('err! f_engine_添加物理车辆 车轮数据错误')
			pass
	
	engineLib.flexCAPI.f_set模型物理_车(ctypes.c_uint32(场景ID), ctypes.py_object(车辆参数), ctypes.py_object(车轮参数) )

	pass
















classes = (
	C_Engine_创建物理平面物体,
)


def register():
	for c in classes:
		bpy.utils.register_class(c)
		
def unregister():
	for c in classes:
		bpy.utils.unregister_class(c)

